package pri.damai.xiaowu.common.core.util;

import pri.damai.xiaowu.common.core.model.ThreadLocalUserInfo;

/**
 * 线程变量用户信息工具类
 * @Desc
 * @Author DaMai
 * @Date 2021/5/19 14:49
 * 但行好事，莫问前程。
 */
public class LocalUserUtils {

    private static ThreadLocal<ThreadLocalUserInfo> LOCAL_USER = new ThreadLocal<>();

    /**
     * 获取当前用户id
     * @apiNote [附加描述]
     * @return java.lang.String
     * @author DaMai
     * @date 2021/5/19 14:54
     */
    public static Long getLocalUserId() {
        return getLocalUser() == null ? -1L : getLocalUser().getUserId();
    }

//    /**
//     * 获取当前用户的组织Id
//     * @apiNote [附加描述]
//     * @return java.lang.String
//     * @author DaMai
//     * @date 2021/9/28 15:55
//     */
//    public static Integer getLocalOrgId() {
//        return Integer.parseInt(getLocalUser().getOrgId());
//    }

    /**
     * 获取线程变量
     * @apiNote 注意此流程变量未清空
     * @return com.ruiruan.pre.common.core.model.ThreadLocalUserInfo
     * @author DaMai
     * @date 2021/5/19 15:21
     */
    public static ThreadLocalUserInfo getLocalUser() {
        return LOCAL_USER.get();
    }

    /**
     * 获取线程变量
     * @apiNote 获取后，清空线程变量
     * @return com.ruiruan.pre.common.core.model.ThreadLocalUserInfo
     * @author DaMai
     * @date 2021/5/19 14:52
     */
    public static ThreadLocalUserInfo getAndRemove() {
        ThreadLocalUserInfo user = LOCAL_USER.get();
        removeLocalUser();
        return user;
    }

    /**
     * 保存线程变量
     * @apiNote [附加描述]
     * @param user 用户信息
     * @author DaMai
     * @date 2021/5/19 14:51
     */
    public static void setLocalUser(ThreadLocalUserInfo user) {
        LOCAL_USER.set(user);
    }

    /**
     * 移除线程变量
     * @apiNote [附加描述]
     * @author DaMai
     * @date 2021/5/19 14:51
     */
    public static void removeLocalUser() {
        LOCAL_USER.remove();
    }
}
